package mx.ipn.presentacion;

import com.trolltech.qt.gui.*;
import com.trolltech.qt.core.*;

import mx.ipn.to.*;
import mx.ipn.*;

public class Principal extends QWidget {
	QTimer timer;
	SplashScreen splash;

	public static void main(String[] args) {
		// "Plastique"
		String[] estilos = (String[]) com.trolltech.qt.gui.QStyleFactory.keys()
				.toArray(
						new String[com.trolltech.qt.gui.QStyleFactory.keys()
								.size()]);
		com.trolltech.qt.gui.QStyle stil = com.trolltech.qt.gui.QStyleFactory
				.create(estilos[4]);
		QApplication.initialize(args);
		Principal principal = new Principal();

		QApplication.setStyle(stil);
		QApplication.exec();
	}

	public Principal() {
		com.trolltech.qt.gui.QStyleFactory.keys();
		splash = new SplashScreen();
		splash.setWindowFlags(com.trolltech.qt.core.Qt.WindowType.SplashScreen);
		Utilerias.centrarVentana(splash);
		splash.show();

		timer = new QTimer();
		timer.start(5);

		// Conexiones
		timer.timeout.connect(this, "showConectar()");
	}

	public Principal(QWidget parent) {
	}

	public void showConectar() {
		timer.stop();
		splash.close();
		splash.dispose();

		TransferObject to = null;

		UrlServidor dialogUrl = new UrlServidor(UrlServidor.NEGOCIOS);

		while (to == null) {
			Utilerias.centrarVentana(dialogUrl);
			dialogUrl.exec();

			ConexionConNegocios.inicializar();

			to = (TransferObject) ConexionConNegocios.invocaServicio(
					"conectar", TransferObject.class);
		}

		if (to.getTipoError() > 0)
			Utilerias.mostrarMensajeError(this, to);

		TransferObject respNegocios = null;

		while (respNegocios == null) {
			dialogUrl = new UrlServidor(UrlServidor.PERSISTENCIA);

			Utilerias.centrarVentana(dialogUrl);
			dialogUrl.exec();

			ConexionConNegocios.invocaServicio("setUrlServidor", Constantes
					.getUrlServidorPersistencia());
			respNegocios = (TransferObject) ConexionConNegocios.invocaServicio(
					"setPuertoServidor", Constantes
							.getPuertoServidorPersistencia(),
					TransferObject.class);

			if (respNegocios != null)
				if (respNegocios.getTipoError() > 0)
					Utilerias.mostrarMensajeError(this, respNegocios);
		}

		showLogin();
	}

	public void showLogin() {
		Login login = new Login();
		login.show();
	}
}
